package com.suray.wcs.service.hk.agv;

import com.suray.wcs.service.hk.agv.bean.HkAgvCallBack;
import com.suray.wcs.service.hk.agv.core.HkAgvTask;
import com.suray.wcs.service.hk.agv.type.HkAgvProcessType;

public interface HkAgv {

    /**
     * 到startPreNode后上报，wcs下发任务继续后进入startNode取货，出来到startPreNode上报(目前不确定是否需要任务继续)，
     * 移动到endPreNode上报，wcs下发任务继续后进入endNode放货，出来到endPreNode上报（目前不确定是否需要任务继续，任务结束）
     * @param startPreNode : 取货点外面的位置
     * @param startNode : 取货点
     * @param endPreNode : 放货点外面的位置
     * @param endNode : 放货点
     * @param taskType
     * @return
     */
    HkAgvTask generalTask(String startPreNode, String startNode, String endPreNode, String endNode, int taskType);

    /**
     * AGV任务执行通知
     * @param callBack
     * @return
     */
    boolean agvCallBack(HkAgvCallBack callBack);

    /**
     * 初始化任务
     * 执行该操作时需先在Agv系统上删除任务, 不建议使用
     * @param taskId
     */
    void initTask(int taskId);

    /**
     * 恢复任务
     * @param taskId
     */
    void recoveryTask(int taskId);

    /**
     * 修改任务进度
     * @param taskId
     * @param process
     */
    void changeTaskProcess(int taskId, HkAgvProcessType process);
}
